/*
 * @titulo: Gestion grid de objetos 
 */
function fn_grid_objetos(tbl_Lista, div_Pag, modo){
  //modo: 0: administrdor 1: usuario con privilegios
  jQuery(tbl_Lista).jqGrid({
    ajaxGridOptions : {
      type:"POST"
    },
    loadComplete: function() {
      grid_control_color(this);
    },
    ondblClickRow: function(){
      var row_id = $(tbl_Lista).getGridParam('selrow');
      ajax_noticia(row_id);
    },
    serializeGridData: function(postdata) {
      postdata.page = postdata.page; //error si se pone +1
      return postdata;
    },
    url:'objetos/grid_server.php?modo=' + modo,
    loadError: function(obj,error, execp){ 
      alert('Error ajax: '+ execp + ' | '+ error + busca_error_ajax(obj));
    },
    datatype: "json",
    colNames: ['Reg.','Titulo','Autor','Tipo','Borrador','Aprobado','Creación','Publicación','No publicac.', 'Obsoleto','Pendiente'],
    colModel: [
    {
      name:'id_objeto',
      index:'id_objeto',
      width:20, 
      align:'right'
    },

    {
      name:'titulo',
      index:'titulo', 
      align:'left'
    },

    {
      name:'nombre_autor',
      index:'nombre_autor',
      width:50
    },

    {
      name:'nombre_tipo',
      index:'nombre_tipo',
      width:40
    },

    {
      name:'borrador',
      index:'borrador',
      formatter: "checkbox",
      align: 'center', 
      width:30
    },

    {
      name:'aprobado',
      index:'aprobado',
      formatter: "checkbox",
      align: 'center',
      width:30
    },

    {
      name:'ffecha_creacion',
      index:'ffecha_creacion', 
      width:40, 
      align:"center",
      datefmt: 'd/m/Y',
      sorttype:'date'
    },

    {
      name:'ffecha_publicacion',
      index:'ffecha_publicacion', 
      width:40, 
      align:"center",
      datefmt: 'd/m/Y',
      sorttype:'date'
    },

    {
      name:'ffecha_nopublicacion',
      index:'ffecha_nopublicacion', 
      width:40, 
      align:"center",
      datefmt: 'd/m/Y',
      sorttype:'date'
    },

    {
      name:'ffecha_borrado',
      index:'ffecha_borrado', 
      width:40, 
      align:"center",
      datefmt: 'd/m/Y',
      sorttype:'date'
    },
    {
      name: 'pendiente',
      hidden: true
    }
    
    ],
    rowNum: 16,
    rowList:[10,16,40,80,120],
    height: 395,
    width: 977,
    pager: div_Pag,
    sortname: 'titulo',
    viewrecords: true,
    gridview: true,
    sortorder: "asc",
    caption:"GESTIÓN DE INFORMACIÓN"
  });
  jQuery(tbl_Lista).jqGrid('navGrid',div_Pag,{
    edit:true,
    del: true,
    add: true,
    addfunc: function(){
      ajax_noticia(-1)
    },
    editfunc: function(id_seleccionado){
      ajax_noticia(id_seleccionado);
    },
    delfunc: function(id_seleccionado){
      dialogo_confirmar(ajax_noticia_borra, id_seleccionado, '¿Realmente lo quiere eliminar?');
    }
  });
} 

function grid_control_color(pthis){ 
  grid_control_cell(pthis, 'pendiente', 'numero','aprobado');
  grid_control_cell(pthis, 'ffecha_borrado', 'fecha','ffecha_borrado');
  $("tr.jqgrow:odd").addClass('myAltRowClass');

}

function grid_control_cell(pthis, campo, tipo, to_campo){
  var iCol = getColumnIndexByName($(pthis),campo);
  var toCol= getColumnIndexByName($(pthis),to_campo);
  var cRows = pthis.rows.length, iRow, row, className;
  var flag
  
  for (iRow=0; iRow<cRows; iRow++) {
    row = pthis.rows[iRow];
    className = row.className;
    if ($.inArray('jqgrow', className.split(' ')) > 0) {
      switch (tipo){
        case 'fecha':
            flag= parseDate($(row.cells[iCol]).text()) < new Date();
          break;
        case 'check': 
          flag=  $(row.cells[iCol]).children("input:checked").length > 0;
        case 'numero':
          flag= ($(row.cells[iCol]).text() == '1');
        default:
      }
      if (flag) {
        if ($.inArray('myAltClassObsoleto', className.split(' ')) === -1) {
          row.cells[toCol].className = className + ' myAltClassObsoleto';
        }
      }
    }
  }
}

var getColumnIndexByName = function(grid, columnName) {
  var cm = grid.jqGrid('getGridParam','colModel'),i=0,l=cm.length;
  for (; i<l; i++) {
    if (cm[i].name===columnName) {
      return i; // return the index
    }
  }
  return -1;
};

function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[2], parts[1]-1,parts[0] ); // months are 0-based
}